package hu.controller;

import hu.pojo.PageBean;
import hu.pojo.Result;
import hu.pojo.User;
import hu.service.UserService;
import hu.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;


/*

实体类中的Result和PageBean只是为了方便查看返回结果,对功能运行无影响

 */



//表现层展示功能
@Slf4j//便于生成日志
@RestController//处理http请求和返回json格式数据
public class UserController {

    //注入业务层
    @Autowired
    private UserService userService;


    //登录功能
    @PostMapping("/login")
    public Result login(@RequestBody User user){ //接收前端传来的实参
        log.info("用户登录：{}",user);
        User u = userService.login(user);

        //登录成功,生成并下发令牌
        if(u != null){
            Map<String,Object> claims = new HashMap<>();
            claims.put("account",u.getAccount());
            claims.put("username",u.getUsername());

            String jwt = JwtUtils.generateJwt(claims); //令牌包含用户账户,用户名学习
            return Result.success(jwt);
        }
        //登录失败
        return Result.error("用户名或密码错误");

    }

    //更改工资
    @GetMapping("/wage")
    public void update(@RequestBody User user){
        log.info("更改工资,用户名:{}",user);
        userService.update(user);
    }

    //分页查询所有用户信息,无参数展示所有信息,支持展示工资段的用户
    @GetMapping("/users")
    public Result page(@RequestParam(defaultValue = "1") Integer page,   //设置默认起始从1开始,一页10条数据
                     @RequestParam(defaultValue = "10")Integer pageSize,
                     String username,Integer moneyBegin,Integer moneyEnd){
        log.info("分页显示(查询用户),用户名:{},起始工资:{},终止工资:{}",username,moneyBegin,moneyEnd);
        PageBean pageBean = userService.page(page,pageSize,username,moneyBegin,moneyEnd);
        return Result.success(pageBean);
    }

}
